package com.woniuxy.dudugua.service;

import com.woniuxy.dudugua.entity.*;
import org.springframework.data.relational.core.sql.In;

import java.util.List;

/**
 * 用户业务层接口
 */
public interface UserService {
    /**
     * 传入一个手机号，返回一个user对象
     */
    User loginByTel(String tel);
    /**
     * 传入一个用户id，查询该用户的所有订单
     */
    List<Order> selectOrderById(int userId) throws Exception;
    /**
     * 传入一个orderid，修改order表种的status为5
     */
    void cancelOrder(Integer orderId)throws Exception;
    /**
     * 传入一个orderId，删除该order
     */
    void deleteOrder(Integer orderId)throws Exception;
    /**
     * 传入一个user对象，存入
     */
    void register(User user)throws Exception;
    /**
     * 传入一个user对象，修改
     */
    void updateUser(User user)throws  Exception;
    /**
     * 传入一个orderid，和userid，更新order表中的状态，更新user表中的余额
     */
    void payOrder(int orderId,int userId)throws  Exception;
    /**
     * 传入一个orderid，确认收货
     */
    void commitOrder(int orderId)throws Exception;
    /**
     * 根据传入的快递单号，查询快递公司的代号，返回代号
     */
    String getCompanyCode(String courierNumber)throws Exception;
    /**
     * 传入快递单号，查询orderid，然后通过orderid查询order表中的地址
     */
    String getAddress(String courierNumber)throws  Exception;
    /**
     * 传一个用户id，查询所有地址信息
     */
    User getUserAddress(Integer userId)throws Exception;
    /**
     * 传入一个用户id，查询address
     */
    List<Address> selectAddressByUserId(Integer userId) throws Exception;
    /**
     * 传入一个用户id，查询用户信息
     */
    User selectInfo(Integer userId)throws Exception;
    /**
     * 传入一个用户id，查询用户的评论
     */
    List<Comment> selectComment(Integer userId)throws Exception;
    /**
     * 传入orderinfoid，查询orderinfo对象
     */
    OrderInfo selectOrderInfo(Integer orderInfoId)throws Exception;
    /**
     * 传入商品skuid，查询productid
     */
    int selectProductId(Integer productSkuId)throws Exception;
    /**
     * 传入评论对象，新增一条评论
     */
    void insertComment(Comment comment)throws Exception;
    //修改
    int updateHead(User user);
    /**
     * 传入一个orderid，修改order表中的状态，并且同时修改用户余额，返回优惠券
     */
    void returnMoney(Integer orderId)throws Exception;
    /**
     * 传入一个orderid，增加一个returngoods数据
     */
    void wantReturn(Integer orderId)throws Exception;
}
